<!DOCTYPE html>
<html lang="ch-CN">
<head>
    <meta charset="UTF-8">
    <title>工厂方法创建对象</title>
</head>
<style>
    body {
        width: 100%;
        height: 100vh;
        background-color: wheat;
        font-size: 30px;
        text-decoration: none;
        font-family: "华文楷体";
    }
</style>
<script>
    /*
        * 缺陷:输出的类型都是Object,并没有分类 都是new的Object
        * 所以人和狗都在一个分类中,需要使用构造函数分类
    */
    // 使用工厂方法创建对象可以大批量创建对象
    // 创建人的对象
    function createPerson(name, age, gender) {
        // 创建一个新对象 let obj = {}也可以
        let obj = new Object();
        // 像对象添加属性
        obj.name = name
        obj.age = age
        obj.gender = gender
        obj.sayName = function () {
            document.write("name:" + this.name + "age:" + this.age + "gender:" + this.gender + "<br>")
        }
        return obj;
    }

    // 创建dog对象
    function createDog(name, age) {
        // 创建一个新对象 let obj = {}也可以
        let obj = {};
        // 像对象添加属性
        obj.name = name
        obj.age = age
        obj.sayName = function () {
            document.write("Dog_name:" + this.name + "Dog_age:" + this.age + "<br>")
        }
        return obj;
    }

    let obj1 = createPerson("小兰", 31, "女");
    let obj2 = createPerson("小明", 45, "男");
    let obj3 = createPerson("小花", 11, "女");
    obj1.sayName()
    obj2.sayName()
    obj3.sayName()
    let obj4 = createDog("小白", 31);
    let obj5 = createDog("小黑", 45);
    obj4.sayName()
    obj5.sayName()

    /*
       * 缺陷:输出的类型都是Object,并没有分类 都是new的Object
       * 所以人和狗都在一个分类中,需要使用构造函数分类
    */
    document.write(obj1 + "<br>" + obj4)
</script>
<body>
</body>
</html>